<?php

class Hanzi2Pinyin{
    
    public static function convert($str)
    {
        return self::c($str); 
    }
    
    private static function g($num){      
        if($num>0&$num<160){   
           return chr($num);   
        }   
        elseif($num<-20319||$num>-10247){   
           return "";   
        }else{   
           for($i=count(self::$d)-1;$i>=0;$i--)   
            {if(self::$d[$i][1]<=$num)break;}   
           return self::$d[$i][0];   
        }   
    }   
    
    private static function c($str){   
        $ret="";   
        for($i=0;$i<strlen($str);$i++){   
           $p=ord(substr($str,$i,1));   
           if($p>160){   
            $q=ord(substr($str,++$i,1));   
            $p=$p*256+$q-65536;   
           }   
           $ret.=self::g($p);   
        }   
        return $ret;   
    }   
       
    private static $d = array(   
            array("a",-20319),   
            array("ai",-20317),   
            array("an",-20304),   
            array("ang",-20295),   
            array("ao",-20292),   
            array("ba",-20283),   
            array("bai",-20265),   
            array("ban",-20257),   
            array("bang",-20242),   
            array("bao",-20230),   
            array("bei",-20051),   
            array("ben",-20036),   
            array("beng",-20032),   
            array("bi",-20026),   
            array("bian",-20002),   
            array("biao",-19990),   
            array("bie",-19986),   
            array("bin",-19982),   
            array("bing",-19976),   
            array("bo",-19805),   
            array("bu",-19784),   
            array("ca",-19775),   
            array("cai",-19774),   
            array("can",-19763),   
            array("cang",-19756),   
            array("cao",-19751),   
            array("ce",-19746),   
            array("ceng",-19741),   
            array("cha",-19739),   
            array("chai",-19728),   
            array("chan",-19725),   
            array("chang",-19715),   
            array("chao",-19540),   
            array("che",-19531),   
            array("chen",-19525),   
            array("cheng",-19515),   
            array("chi",-19500),   
            array("chong",-19484),   
            array("chou",-19479),   
            array("chu",-19467),   
            array("chuai",-19289),   
            array("chuan",-19288),   
            array("chuang",-19281),   
            array("chui",-19275),   
            array("chun",-19270),   
            array("chuo",-19263),   
            array("ci",-19261),   
            array("cong",-19249),   
            array("cou",-19243),   
            array("cu",-19242),   
            array("cuan",-19238),   
            array("cui",-19235),   
            array("cun",-19227),   
            array("cuo",-19224),   
            array("da",-19218),   
            array("dai",-19212),   
            array("dan",-19038),   
            array("dang",-19023),   
            array("dao",-19018),   
            array("de",-19006),   
            array("deng",-19003),   
            array("di",-18996),   
            array("dian",-18977),   
            array("diao",-18961),   
            array("die",-18952),   
            array("ding",-18783),   
            array("diu",-18774),   
            array("dong",-18773),   
            array("dou",-18763),   
            array("du",-18756),   
            array("duan",-18741),   
            array("dui",-18735),   
            array("dun",-18731),   
            array("duo",-18722),   
            array("e",-18710),   
            array("en",-18697),   
            array("er",-18696),   
            array("fa",-18526),   
            array("fan",-18518),   
            array("fang",-18501),   
            array("fei",-18490),   
            array("fen",-18478),   
            array("feng",-18463),   
            array("fo",-18448),   
            array("fou",-18447),   
            array("fu",-18446),   
            array("ga",-18239),   
            array("gai",-18237),   
            array("gan",-18231),   
            array("gang",-18220),   
            array("gao",-18211),   
            array("ge",-18201),   
            array("gei",-18184),   
            array("gen",-18183),   
            array("geng",-18181),   
            array("gong",-18012),   
            array("gou",-17997),   
            array("gu",-17988),   
            array("gua",-17970),   
            array("guai",-17964),   
            array("guan",-17961),   
            array("guang",-17950),   
            array("gui",-17947),   
            array("gun",-17931),   
            array("guo",-17928),   
            array("ha",-17922),   
            array("hai",-17759),   
            array("han",-17752),   
            array("hang",-17733),   
            array("hao",-17730),   
            array("he",-17721),   
            array("hei",-17703),   
            array("hen",-17701),   
            array("heng",-17697),   
            array("hong",-17692),   
            array("hou",-17683),   
            array("hu",-17676),   
            array("hua",-17496),   
            array("huai",-17487),   
            array("huan",-17482),   
            array("huang",-17468),   
            array("hui",-17454),   
            array("hun",-17433),   
            array("huo",-17427),   
            array("ji",-17417),   
            array("jia",-17202),   
            array("jian",-17185),   
            array("jiang",-16983),   
            array("jiao",-16970),   
            array("jie",-16942),   
            array("jin",-16915),   
            array("jing",-16733),   
            array("jiong",-16708),   
            array("jiu",-16706),   
            array("ju",-16689),   
            array("juan",-16664),   
            array("jue",-16657),   
            array("jun",-16647),   
            array("ka",-16474),   
            array("kai",-16470),   
            array("kan",-16465),   
            array("kang",-16459),   
            array("kao",-16452),   
            array("ke",-16448),   
            array("ken",-16433),   
            array("keng",-16429),   
            array("kong",-16427),   
            array("kou",-16423),   
            array("ku",-16419),   
            array("kua",-16412),   
            array("kuai",-16407),   
            array("kuan",-16403),   
            array("kuang",-16401),   
            array("kui",-16393),   
            array("kun",-16220),   
            array("kuo",-16216),   
            array("la",-16212),   
            array("lai",-16205),   
            array("lan",-16202),   
            array("lang",-16187),   
            array("lao",-16180),   
            array("le",-16171),   
            array("lei",-16169),   
            array("leng",-16158),   
            array("li",-16155),   
            array("lia",-15959),   
            array("lian",-15958),   
            array("liang",-15944),   
            array("liao",-15933),   
            array("lie",-15920),   
            array("lin",-15915),   
            array("ling",-15903),   
            array("liu",-15889),   
            array("long",-15878),   
            array("lou",-15707),   
            array("lu",-15701),   
            array("lv",-15681),   
            array("luan",-15667),   
            array("lue",-15661),   
            array("lun",-15659),   
            array("luo",-15652),   
            array("ma",-15640),   
            array("mai",-15631),   
            array("man",-15625),   
            array("mang",-15454),   
            array("mao",-15448),   
            array("me",-15436),   
            array("mei",-15435),   
            array("men",-15419),   
            array("meng",-15416),   
            array("mi",-15408),   
            array("mian",-15394),   
            array("miao",-15385),   
            array("mie",-15377),   
            array("min",-15375),   
            array("ming",-15369),   
            array("miu",-15363),   
            array("mo",-15362),   
            array("mou",-15183),   
            array("mu",-15180),   
            array("na",-15165),   
            array("nai",-15158),   
            array("nan",-15153),   
            array("nang",-15150),   
            array("nao",-15149),   
            array("ne",-15144),   
            array("nei",-15143),   
            array("nen",-15141),   
            array("neng",-15140),   
            array("ni",-15139),   
            array("nian",-15128),   
            array("niang",-15121),   
            array("niao",-15119),   
            array("nie",-15117),   
            array("nin",-15110),   
            array("ning",-15109),   
            array("niu",-14941),   
            array("nong",-14937),   
            array("nu",-14933),   
            array("nv",-14930),   
            array("nuan",-14929),   
            array("nue",-14928),   
            array("nuo",-14926),   
            array("o",-14922),   
            array("ou",-14921),   
            array("pa",-14914),   
            array("pai",-14908),   
            array("pan",-14902),   
            array("pang",-14894),   
            array("pao",-14889),   
            array("pei",-14882),   
            array("pen",-14873),   
            array("peng",-14871),   
            array("pi",-14857),   
            array("pian",-14678),   
            array("piao",-14674),   
            array("pie",-14670),   
            array("pin",-14668),   
            array("ping",-14663),   
            array("po",-14654),   
            array("pu",-14645),   
            array("qi",-14630),   
            array("qia",-14594),   
            array("qian",-14429),   
            array("qiang",-14407),   
            array("qiao",-14399),   
            array("qie",-14384),   
            array("qin",-14379),   
            array("qing",-14368),   
            array("qiong",-14355),   
            array("qiu",-14353),   
            array("qu",-14345),   
            array("quan",-14170),   
            array("que",-14159),   
            array("qun",-14151),   
            array("ran",-14149),   
            array("rang",-14145),   
            array("rao",-14140),   
            array("re",-14137),   
            array("ren",-14135),   
            array("reng",-14125),   
            array("ri",-14123),   
            array("rong",-14122),   
            array("rou",-14112),   
            array("ru",-14109),   
            array("ruan",-14099),   
            array("rui",-14097),   
            array("run",-14094),   
            array("ruo",-14092),   
            array("sa",-14090),   
            array("sai",-14087),   
            array("san",-14083),   
            array("sang",-13917),   
            array("sao",-13914),   
            array("se",-13910),   
            array("sen",-13907),   
            array("seng",-13906),   
            array("sha",-13905),   
            array("shai",-13896),   
            array("shan",-13894),   
            array("shang",-13878),   
            array("shao",-13870),   
            array("she",-13859),   
            array("shen",-13847),   
            array("sheng",-13831),   
            array("shi",-13658),   
            array("shou",-13611),   
            array("shu",-13601),   
            array("shua",-13406),   
            array("shuai",-13404),   
            array("shuan",-13400),   
            array("shuang",-13398),   
            array("shui",-13395),   
            array("shun",-13391),   
            array("shuo",-13387),   
            array("si",-13383),   
            array("song",-13367),   
            array("sou",-13359),   
            array("su",-13356),   
            array("suan",-13343),   
            array("sui",-13340),   
            array("sun",-13329),   
            array("suo",-13326),   
            array("ta",-13318),   
            array("tai",-13147),   
            array("tan",-13138),   
            array("tang",-13120),   
            array("tao",-13107),   
            array("te",-13096),   
            array("teng",-13095),   
            array("ti",-13091),   
            array("tian",-13076),   
            array("tiao",-13068),   
            array("tie",-13063),   
            array("ting",-13060),   
            array("tong",-12888),   
            array("tou",-12875),   
            array("tu",-12871),   
            array("tuan",-12860),   
            array("tui",-12858),   
            array("tun",-12852),   
            array("tuo",-12849),   
            array("wa",-12838),   
            array("wai",-12831),   
            array("wan",-12829),   
            array("wang",-12812),   
            array("wei",-12802),   
            array("wen",-12607),   
            array("weng",-12597),   
            array("wo",-12594),   
            array("wu",-12585),   
            array("xi",-12556),   
            array("xia",-12359),   
            array("xian",-12346),   
            array("xiang",-12320),   
            array("xiao",-12300),   
            array("xie",-12120),   
            array("xin",-12099),   
            array("xing",-12089),   
            array("xiong",-12074),   
            array("xiu",-12067),   
            array("xu",-12058),   
            array("xuan",-12039),   
            array("xue",-11867),   
            array("xun",-11861),   
            array("ya",-11847),   
            array("yan",-11831),   
            array("yang",-11798),   
            array("yao",-11781),   
            array("ye",-11604),   
            array("yi",-11589),   
            array("yin",-11536),   
            array("ying",-11358),   
            array("yo",-11340),   
            array("yong",-11339),   
            array("you",-11324),   
            array("yu",-11303),   
            array("yuan",-11097),   
            array("yue",-11077),   
            array("yun",-11067),   
            array("za",-11055),   
            array("zai",-11052),   
            array("zan",-11045),   
            array("zang",-11041),   
            array("zao",-11038),   
            array("ze",-11024),   
            array("zei",-11020),   
            array("zen",-11019),   
            array("zeng",-11018),   
            array("zha",-11014),   
            array("zhai",-10838),   
            array("zhan",-10832),   
            array("zhang",-10815),   
            array("zhao",-10800),   
            array("zhe",-10790),   
            array("zhen",-10780),   
            array("zheng",-10764),   
            array("zhi",-10587),   
            array("zhong",-10544),   
            array("zhou",-10533),   
            array("zhu",-10519),   
            array("zhua",-10331),   
            array("zhuai",-10329),   
            array("zhuan",-10328),   
            array("zhuang",-10322),   
            array("zhui",-10315),   
            array("zhun",-10309),   
            array("zhuo",-10307),   
            array("zi",-10296),   
            array("zong",-10281),   
            array("zou",-10274),   
            array("zu",-10270),   
            array("zuan",-10262),   
            array("zui",-10260),   
            array("zun",-10256),   
            array("zuo",-10254)   
        );       
}